#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>

void PrintSignal(sigset_t set)
{
  int i = 1;
  for(i = 1; i < 32; i++)
  {
    if(sigismember(&set, i)){
      printf("1 ");
    }
    else printf("0 ");
  }

  printf("\n");
}

int main()
{
  sigset_t set, oset;
  sigemptyset(&set);
  sigemptyset(&oset);

  //添加信号屏蔽字
  int i = 1;
  for(; i < 32; i++){
    sigaddset(&set, i);
  }

  sigprocmask(SIG_SETMASK, &set, NULL);
  
  //给当前进程发送信号
  for(i = 1; i < 32; i++){
    if(i != 19)
      raise(i);
    
    //获取未决信号集
    sigpending(&oset);
    //打印信号
    PrintSignal(oset);
  } 
  
  return 0;
}
